package com.sinodata.bsm.common.constants;

/**
 * 
 * <p>
 * Description:事件模块的常量定义，包含事件类别表数据和事件表数据涉及常量定义 
 * </p>
 *
 * @author liulibo
 * @version 1.0

 * <p>
 * History: 
 *
 * Date                     Author         Version     Description
 * ---------------------------------------------------------------------------------
 * 2012-5-21 PM  2:34:32    liulibo        1.0         To create
 * </p>
 *
 * @since 
 * @see
 */
public class EventConstants {

    /**
     * 事件认领确认人为系统
     */
    public static final String REMARKER_SYSTEM = "system";

    /**
     * 事件状态：新事件
     */
    public final static int STATUS_NEW = 0; //"N"

    /**
     * 事件状态：事件认领后的状态
     */
    public final static int STATUS_ACKNOWLEDGED = 1;//"A"

    /**
     * 事件状态：事件确认后的状态，认为事件已经处理
     */
    public final static int STATUS_CONFIRMED = 2;//"C"

    /**
     * 事件状态描述：未认领
     */
    public final static String STATUS_STR_NEW = "未认领";

    /**
     * 事件状态描述：已认领
     */
    public final static String STATUS_STR_ACKNOWLEDGED = "已认领";

    /**
     * 事件状态描述：已清除
     */
    public final static String STATUS_STR_CONFIRMED = "已清除";

    /**
     * 事件确认类型：新事件自动清除，被事件自动确认
     * (1、新事件恢复 ，原事件被清除 2、可恢复事件未清除同类别同事件被过滤 3、可恢复事件升级或降级原事件被清除)
     */
    public final static int CONFIRM_TYPE_EVENT = 0;//"E"

    /**
     * 事件确认类型：用户确认
     */
    public final static int CONFIRM_TYPE_USER = 1;//"U"

    /**
     * 事件确认类型：被过滤规则清除
     */
    public final static int CONFIRM_TYPE_FILTER = 2;//"F"

    /**
     * 事件确认类型：被自动清除规则清除
     */
    public final static int CONFIRM_TYPE_AUTO = 3;//"F"

    /**
     * 事件分类：故障类事件
     */
    public final static int CATALOG_FAULTEVENT = 1;

    /**
     * 事件分类：故障恢复事件
     */
    public final static int CATALOG_REFAULTEVENT = 2;

    /**
     * 事件分类：健康度事件
     */
    public final static int CATALOG_USABLEEVENT = 3;

    /**
     * 事件分类：故障类事件，故障升级事件
     */
    public final static int CATALOG_UPEVENT = 4;

    /**
     * 事件分类：因规则清除，清除事件
     */
    public final static int CATALOG_RULE_CLEAR = 5;

    /**
     * TRAP 事件类别
     */
    public final static int CATALOG_TRAP = 20;

    /**
     * SYSLOG 事件类别
     */
    public final static int CATALOG_SYSLOG = 21;

    /**
     * 系统自监控  事件类别
     */
    public final static int CATALOG_WATCH = 22;

    /**
     * 事件类别分类：可恢复事件
     */
    public static final int TYPE_RECOVERABLE = 1;

    /**
     * 事件类别分类：不可恢复事件
     */
    public static final int TYPE_UNRECOVERABLE = 0;

    /**
     * 事件级别：无级别 事件，例如清除其它事件的事件
     */
    public static final int LEVEL_NO = -1;

    /**
     * 事件级别：正常 事件
     */
    public static final int LEVEL_NORMAL = 1;

    /**
     * 事件级别：轻微 事件
     */
    public static final int LEVEL_MINOR = 2;

    /**
     * 事件级别：警告 事件
     */
    public static final int LEVEL_WARNING = 3;

    /**
     * 事件级别：重要 事件
     */
    public static final int LEVEL_MAJOR = 4;

    /**
     * 事件级别：严重 事件
     */
    public static final int LEVEL_CRITICAL = 5;

    /**
     * 事件级别描述：未知 事件
     */
    private static final String LEVEL_STR_UNKNOWN = "未知";

    /**
     * 事件级别描述：正常 事件
     */
    private static final String LEVEL_STR_NORMAL = "正常";

    /**
     * 事件级别描述：轻微 事件
     */
    private static final String LEVEL_STR_MINOR = "轻微";

    /**
     * 事件级别描述：警告 事件
     */
    private static final String LEVEL_STR_WARNING = "警告";

    /**
     * 事件级别描述：重要 事件
     */
    private static final String LEVEL_STR_MAJOR = "重要";

    /**
     * 事件级别描述：严重 事件
     */
    private static final String LEVEL_STR_CRITICAL = "严重";

    /**
     * 获取事件级别描述
     * 
     * @param level  事件级别
     * @return
     */
    public static String getLevelDesc(int level) {
        String retString = null;
        switch (level) {
            case 1:
                retString = LEVEL_STR_NORMAL;
                break;
            case 2:
                retString = LEVEL_STR_MINOR;
                break;
            case 3:
                retString = LEVEL_STR_WARNING;
                break;
            case 4:
                retString = LEVEL_STR_MAJOR;
                break;
            case 5:
                retString = LEVEL_STR_CRITICAL;
                break;
            default:
                retString = LEVEL_STR_UNKNOWN;
        }
        return retString;
    }

    /**
     * 获取事件状态描述
     * 
     * @param status
     * @return
     */
    public static String getStatusDesc(int status) {
        String retString = null;
        switch (status) {
            case 0:
                retString = STATUS_STR_NEW;
                break;
            case 1:
                retString = STATUS_STR_ACKNOWLEDGED;
                break;
            case 2:
                retString = STATUS_STR_CONFIRMED;
                break;
            default:
                retString = STATUS_STR_NEW;
        }
        return retString;
    }

    /**
     * 获取事件级别
     * 
     * @param str  事件级别描述
     * @return
     */
    public static int getLevel(String str) {
        if (str.equals(LEVEL_STR_NORMAL)) {
            return LEVEL_NORMAL;
        } else if (str.equals(LEVEL_STR_MINOR)) {
            return LEVEL_MINOR;
        } else if (str.equals(LEVEL_STR_WARNING)) {
            return LEVEL_WARNING;
        } else if (str.equals(LEVEL_STR_MAJOR)) {
            return LEVEL_MAJOR;
        } else if (str.equals(LEVEL_STR_CRITICAL)) {
            return LEVEL_CRITICAL;
        } else {
            return LEVEL_NORMAL;
        }
    }

}